From: Keir Fraser Date: Thu, 28 Aug 2008 08:40:10 +0000 (+0100) Subject: stubdom: make xc_map_foreign_ranges use malloc instead of stack space X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14113^2~20 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=2e8459a4fcb153bb6f9199a97e85bf17bd2c1b12;p=xen.git stubdom: make xc_map_foreign_ranges use malloc instead of stack space Signed-off-by: Samuel Thibault --- diff --git a/tools/libxc/xc_minios.c b/tools/libxc/xc_minios.c index be81c15ee1..a4e32ff078 100644 --- a/tools/libxc/xc_minios.c +++ b/tools/libxc/xc_minios.c @@ -80,9 +80,10 @@ void *xc_map_foreign_ranges(int xc_handle, uint32_t dom, size_t size, int prot, size_t chunksize, privcmd_mmap_entry_t entries[], int nentries) { - unsigned long mfns[size / PAGE_SIZE]; + unsigned long *mfns; int i, j, n; unsigned long pt_prot = 0; + void *ret; #ifdef __ia64__ /* TODO */ #else @@ -92,12 +93,16 @@ void *xc_map_foreign_ranges(int xc_handle, uint32_t dom, pt_prot = L1_PROT; #endif + mfns = malloc((size / PAGE_SIZE) * sizeof(*mfns)); + n = 0; for (i = 0; i < nentries; i++) for (j = 0; j < chunksize / PAGE_SIZE; j++) mfns[n++] = entries[i].mfn + j; - return map_frames_ex(mfns, n, 1, 0, 1, dom, 0, pt_prot); + ret = map_frames_ex(mfns, n, 1, 0, 1, dom, 0, pt_prot); + free(mfns); + return ret; }